package com.project.webpage.controller;


import com.github.pagehelper.PageInfo;
import com.project.webpage.aop.TagLog;
import com.project.webpage.dto.*;
import com.project.webpage.service.XlgjdayService;
import com.project.webpage.util.RestResult;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

@RestController
@RequestMapping("/api/webpage/xlgjday/")
public class XlgjdayController extends BaseController {

    @Resource
    XlgjdayService xlgjdayService;

    /**
     * 列表查询
     */
    @PostMapping("page")
    @TagLog(operation = 0, content = "查询线路班次配车列表")
    public RestResult page(@RequestBody SearchByRqParam param) {
        this.getPage(true, param);
        return RestResult.ok(new PageInfo<>(xlgjdayService.getListForPage(param)));
    }

    /**
     * 导出列表
     */
    @PostMapping("output")
    @TagLog(operation = 5, content = "导出线路班次配车列表")
    public RestResult output(@RequestBody SearchByRqParam param) {
        this.getPage(false, param);
        return RestResult.ok(xlgjdayService.getListForPage(param));
    }

    /**
     * 指定线路历史数据列表查询
     */
    @PostMapping("jgxlid/page")
    @TagLog(operation = 0, content = "查询线路班次配车指定线路历史数据列表")
    public RestResult pageByJgxlid(@RequestBody SearchByRqRangeParam param) {
        this.getPage(true, param);
        return RestResult.ok(new PageInfo<>(xlgjdayService.getListByJgxlidForPage(param)));
    }

    /**
     * 指定线路历史数据导出列表
     */
    @PostMapping("jgxlid/output")
    @TagLog(operation = 5, content = "导出线路班次配车指定线路历史数据列表")
    public RestResult outputByJgxlid(@RequestBody SearchByRqRangeParam param) {
        this.getPage(false, param);
        return RestResult.ok(xlgjdayService.getListByJgxlidForPage(param));
    }

    /**
     * 高峰时段列表查询
     */
    @PostMapping("gaofeng/page")
    @TagLog(operation = 0, content = "查询线路高峰时段班次配车列表")
    public RestResult gfPage(@RequestBody SearchByRqParam param) {
        this.getPage(true, param);
        return RestResult.ok(new PageInfo<>(xlgjdayService.getGaofengListForPage(param)));
    }

    /**
     * 高峰时段导出列表
     */
    @PostMapping("gaofeng/output")
    @TagLog(operation = 5, content = "导出线路高峰时段班次配车列表")
    public RestResult gfOutput(@RequestBody SearchByRqParam param) {
        this.getPage(false, param);
        return RestResult.ok(xlgjdayService.getGaofengListForPage(param));
    }

    /**
     * 高峰时段指定线路历史数据列表查询
     */
    @PostMapping("gaofeng/jgxlid/page")
    @TagLog(operation = 0, content = "查询线路高峰时段班次配车指定线路历史数据列表")
    public RestResult gfPageByJgxlid(@RequestBody SearchByRqRangeParam param) {
        this.getPage(true, param);
        return RestResult.ok(new PageInfo<>(xlgjdayService.getGaofengListByJgxlidForPage(param)));
    }

    /**
     * 高峰时段指定线路历史数据导出列表
     */
    @PostMapping("gaofeng/jgxlid/output")
    @TagLog(operation = 5, content = "导出线路高峰时段班次配车指定线路历史数据列表")
    public RestResult gfOutputByJgxlid(@RequestBody SearchByRqRangeParam param) {
        this.getPage(false, param);
        return RestResult.ok(xlgjdayService.getGaofengListByJgxlidForPage(param));
    }

    /**
     * 首末班准点率列表查询
     */
    @PostMapping("smbzdl/page")
    @TagLog(operation = 0, content = "查询线路首末班准点率列表")
    public RestResult smbzdlPage(@RequestBody SmbzdlParam param) {
        this.getPage(true, param);
        return RestResult.ok(new PageInfo<>(xlgjdayService.getSmbzdlListForPage(param)));
    }

    /**
     * 首末班准点率导出列表
     */
    @PostMapping("smbzdl/output")
    @TagLog(operation = 5, content = "导出线路首末班准点率列表")
    public RestResult smbzdlOutput(@RequestBody SmbzdlParam param) {
        this.getPage(false, param);
        return RestResult.ok(xlgjdayService.getSmbzdlListForPage(param));
    }

    /**
     * 首末班准点率指定线路历史数据列表查询
     */
    @PostMapping("smbzdl/jgxlid/page")
    @TagLog(operation = 0, content = "查询线路首末班准点率指定线路历史数据列表")
    public RestResult smbzdlPageByJgxlid(@RequestBody SearchByRqRangeParam param) {
        this.getPage(true, param);
        return RestResult.ok(new PageInfo<>(xlgjdayService.getSmbzdlListByJgxlidForPage(param)));
    }

    /**
     * 首末班准点率指定线路历史数据导出列表
     */
    @PostMapping("smbzdl/jgxlid/output")
    @TagLog(operation = 5, content = "导出线路首末班准点率指定线路历史数据列表")
    public RestResult smbzdlOutputByJgxlid(@RequestBody SearchByRqRangeParam param) {
        this.getPage(false, param);
        return RestResult.ok(xlgjdayService.getSmbzdlListByJgxlidForPage(param));
    }

    /**
     * 骨干线路低谷高峰班次列表查询
     */
    @PostMapping("gugan/page")
    @TagLog(operation = 0, content = "查询骨干线路低谷高峰班次列表")
    public RestResult ggPage(@RequestBody SearchByRqParam param) {
        this.getPage(true, param);
        return RestResult.ok(new PageInfo<>(xlgjdayService.getGuganListForPage(param)));
    }

    /**
     * 骨干线路低谷高峰班次导出列表
     */
    @PostMapping("gugan/output")
    @TagLog(operation = 5, content = "导出骨干线路低谷高峰班次列表")
    public RestResult ggOutput(@RequestBody SearchByRqParam param) {
        this.getPage(false, param);
        return RestResult.ok(xlgjdayService.getGuganListForPage(param));
    }

    /**
     * 骨干线路低谷高峰班次按企业列表查询
     */
    @PostMapping("gugan/qy/page")
    @TagLog(operation = 0, content = "查询骨干线路低谷高峰班次按企业列表")
    public RestResult ggQyPage(@RequestBody SearchByRqParam param) {
        this.getPage(true, param);
        return RestResult.ok(new PageInfo<>(xlgjdayService.getGuganQyListForPage(param)));
    }

    /**
     * 骨干线路低谷高峰班次按企业导出列表
     */
    @PostMapping("gugan/qy/output")
    @TagLog(operation = 5, content = "导出骨干线路低谷高峰班次按企业列表")
    public RestResult ggQyOutput(@RequestBody SearchByRqParam param) {
        this.getPage(false, param);
        return RestResult.ok(xlgjdayService.getGuganQyListForPage(param));
    }

    /**
     * 线路里程按日列表查询
     */
    @PostMapping("yylc/daily/page")
    @TagLog(operation = 0, content = "查询线路里程按日列表")
    public RestResult yylcPage(@RequestBody SearchByRqParam param) {
        this.getPage(true, param);
        return RestResult.ok(new PageInfo<>(xlgjdayService.getYylcListForPage(param)));
    }

    /**
     * 线路里程按日导出列表
     */
    @PostMapping("yylc/daily/output")
    @TagLog(operation = 5, content = "导出线路里程按日列表")
    public RestResult yylcOutput(@RequestBody SearchByRqParam param) {
        this.getPage(false, param);
        return RestResult.ok(xlgjdayService.getYylcListForPage(param));
    }

    /**
     * 线路里程按月列表查询
     */
    @PostMapping("yylc/monthly/page")
    @TagLog(operation = 0, content = "查询线路里程按月列表")
    public RestResult yylcMonthlyPage(@RequestBody SearchByMonthParam param) {
        this.getPage(true, param);
        return RestResult.ok(new PageInfo<>(xlgjdayService.getYylcMonthlyListForPage(param)));
    }

    /**
     * 线路里程按月导出列表
     */
    @PostMapping("yylc/monthly/output")
    @TagLog(operation = 5, content = "导出线路里程按月列表")
    public RestResult yylcMonthlyOutput(@RequestBody SearchByMonthParam param) {
        this.getPage(false, param);
        return RestResult.ok(xlgjdayService.getYylcMonthlyListForPage(param));
    }

    /**
     * 营运报表数据核实列表查询
     */
    @PostMapping("bccy/page")
    @TagLog(operation = 0, content = "查询营运报表数据核实列表")
    public RestResult bccyPage(@RequestBody BccyParam param) {
        this.getPage(true, param);
        return RestResult.ok(new PageInfo<>(xlgjdayService.getBccyListForPage(param)));
    }

    /**
     * 营运报表数据核实导出列表
     */
    @PostMapping("bccy/output")
    @TagLog(operation = 5, content = "导出营运报表数据核实列表")
    public RestResult bccyOutput(@RequestBody BccyParam param) {
        this.getPage(false, param);
        return RestResult.ok(xlgjdayService.getBccyListForPage(param));
    }

    /**
     * 车辆滞站报警列表查询
     */
    @PostMapping("zz/page")
    @TagLog(operation = 0, content = "查询车辆滞站报警列表")
    public RestResult zzPage(@RequestBody XlZzParam param) {
        this.getPage(true, param);
        return RestResult.ok(new PageInfo<>(xlgjdayService.getZzListForPage(param)));
    }

    /**
     * 车辆滞站报警导出列表
     */
    @PostMapping("zz/output")
    @TagLog(operation = 5, content = "导出车辆滞站报警列表")
    public RestResult zzOutput(@RequestBody XlZzParam param) {
        this.getPage(false, param);
        return RestResult.ok(xlgjdayService.getZzListForPage(param));
    }

    /**
     * 线路大间隔报警列表查询
     */
    @PostMapping("djg/page")
    @TagLog(operation = 0, content = "查询线路大间隔报警列表")
    public RestResult djgPage(@RequestBody SearchByRqParam param) {
        this.getPage(true, param);
        return RestResult.ok(new PageInfo<>(xlgjdayService.getDjgListForPage(param)));
    }

    /**
     * 线路大间隔报警导出列表
     */
    @PostMapping("djg/output")
    @TagLog(operation = 5, content = "导出线路大间隔报警列表")
    public RestResult djgOutput(@RequestBody SearchByRqParam param) {
        this.getPage(false, param);
        return RestResult.ok(xlgjdayService.getDjgListForPage(param));
    }

    /**
     * 线路平均速度列表查询
     */
    @PostMapping("pjsd/page")
    @TagLog(operation = 0, content = "查询线路平均速度列表")
    public RestResult pjsdPage(@RequestBody SearchByRqParam param) {
        this.getPage(true, param);
        return RestResult.ok(new PageInfo<>(xlgjdayService.getPjsdListForPage(param)));
    }

    /**
     * 线路平均速度导出列表
     */
    @PostMapping("pjsd/output")
    @TagLog(operation = 5, content = "导出线路平均速度列表")
    public RestResult pjsdOutput(@RequestBody SearchByRqParam param) {
        this.getPage(false, param);
        return RestResult.ok(xlgjdayService.getPjsdListForPage(param));
    }

    /**
     * 线路超速列表查询
     */
    @PostMapping("cs/page")
    @TagLog(operation = 0, content = "查询线路超速列表")
    public RestResult csPage(@RequestBody SearchByRqParam param) {
        this.getPage(true, param);
        return RestResult.ok(new PageInfo<>(xlgjdayService.getCsListForPage(param)));
    }

    /**
     * 线路超速导出列表
     */
    @PostMapping("cs/output")
    @TagLog(operation = 5, content = "导出线路超速列表")
    public RestResult csOutput(@RequestBody SearchByRqParam param) {
        this.getPage(false, param);
        return RestResult.ok(xlgjdayService.getCsListForPage(param));
    }

    /**
     * 企业车载监管数据月考评列表查询
     */
    @PostMapping("gps/monthly/page")
    @TagLog(operation = 0, content = "查询企业车载监管数据月考评列表")
    public RestResult gpsMonthlyPage(@RequestBody SearchByMonthParam param) {
        this.getPage(true, param);
        return RestResult.ok(new PageInfo<>(xlgjdayService.getGpsMonthListForPage(param)));
    }

    /**
     * 企业车载监管数据月考评导出列表
     */
    @PostMapping("gps/monthly/output")
    @TagLog(operation = 5, content = "导出企业车载监管数据月考评列表")
    public RestResult gpsMonthlyOutput(@RequestBody SearchByMonthParam param) {
        this.getPage(false, param);
        return RestResult.ok(xlgjdayService.getGpsMonthListForPage(param));
    }


    /**
     * 企业服务水平分析列表查询
     */
    @PostMapping("fwsp/page")
    @TagLog(operation = 0, content = "查询企业服务水平分析列表")
    public RestResult fwspPage(@RequestBody SearchByRqParam param) {
        this.getPage(true, param);
        return RestResult.ok(new PageInfo<>(xlgjdayService.getFwspListForPage(param)));
    }

    /**
     * 企业服务水平分析导出列表
     */
    @PostMapping("fwsp/output")
    @TagLog(operation = 5, content = "导出企业服务水平分析列表")
    public RestResult fwspOutput(@RequestBody SearchByRqParam param) {
        this.getPage(false, param);
        return RestResult.ok(xlgjdayService.getFwspListForPage(param));
    }

    /**
     * 企业服务水平分析按月列表查询
     */
    @PostMapping("fwsp/monthly/page")
    @TagLog(operation = 0, content = "查询企业服务水平分析按月列表")
    public RestResult fwspMonthlyPage(@RequestBody SearchByMonthParam param) {
        this.getPage(true, param);
        return RestResult.ok(new PageInfo<>(xlgjdayService.getFwspMonthListForPage(param)));
    }

    /**
     * 企业服务水平分析导出列表
     */
    @PostMapping("fwsp/monthly/output")
    @TagLog(operation = 5, content = "导出企业服务水平分析按月列表")
    public RestResult fwspMonthlyOutput(@RequestBody SearchByMonthParam param) {
        this.getPage(false, param);
        return RestResult.ok(xlgjdayService.getFwspMonthListForPage(param));
    }

    /**
     * 在线率预警列表查询
     */
    @PostMapping("zaixian/yujing/page")
    @TagLog(operation = 0, content = "查询在线率预警列表")
    public RestResult zaixianYujingPage(@RequestBody SearchByRqParam param) {
        this.getPage(true, param);
        return RestResult.ok(new PageInfo<>(xlgjdayService.getZaixianYuJingListForPage(param)));
    }

    /**
     * 在线率预警导出列表
     */
    @PostMapping("zaixian/yujing/output")
    @TagLog(operation = 5, content = "导出在线率预警列表")
    public RestResult zaixianYujingOutput(@RequestBody SearchByRqParam param) {
        this.getPage(false, param);
        return RestResult.ok(xlgjdayService.getZaixianYuJingListForPage(param));
    }

    /**
     * 出车率预警列表查询
     */
    @PostMapping("pc/yujing/page")
    @TagLog(operation = 0, content = "查询出车率预警列表")
    public RestResult pcYujingPage(@RequestBody SearchByRqParam param) {
        this.getPage(true, param);
        return RestResult.ok(new PageInfo<>(xlgjdayService.getPcYuJingListForPage(param)));
    }

    /**
     * 出车率预警导出列表
     */
    @PostMapping("pc/yujing/output")
    @TagLog(operation = 5, content = "导出出车率预警列表")
    public RestResult pcYujingOutput(@RequestBody SearchByRqParam param) {
        this.getPage(false, param);
        return RestResult.ok(xlgjdayService.getPcYuJingListForPage(param));
    }

    /**
     * 班次率预警列表查询
     */
    @PostMapping("bc/yujing/page")
    @TagLog(operation = 0, content = "查询班次率预警列表")
    public RestResult bcYujingPage(@RequestBody SearchByRqParam param) {
        this.getPage(true, param);
        return RestResult.ok(new PageInfo<>(xlgjdayService.getBcYuJingListForPage(param)));
    }

    /**
     * 班次率预警导出列表
     */
    @PostMapping("bc/yujing/output")
    @TagLog(operation = 5, content = "导出班次率预警列表")
    public RestResult bcYujingOutput(@RequestBody SearchByRqParam param) {
        this.getPage(false, param);
        return RestResult.ok(xlgjdayService.getBcYuJingListForPage(param));
    }

    /**
     * 首末班准点率预警列表查询
     */
    @PostMapping("smbzdl/yujing/page")
    @TagLog(operation = 0, content = "查询首末班准点率预警列表")
    public RestResult smbzdlYujingPage(@RequestBody SearchByRqParam param) {
        this.getPage(true, param);
        return RestResult.ok(new PageInfo<>(xlgjdayService.getSmbzdlYuJingListForPage(param)));
    }

    /**
     * 首末班准点率预警导出列表
     */
    @PostMapping("smbzdl/yujing/output")
    @TagLog(operation = 5, content = "导出首末班准点率预警列表")
    public RestResult smbzdlYujingOutput(@RequestBody SearchByRqParam param) {
        this.getPage(false, param);
        return RestResult.ok(xlgjdayService.getSmbzdlYuJingListForPage(param));
    }

    /**
     * 大间隔预警列表查询
     */
    @PostMapping("djg/yujing/page")
    @TagLog(operation = 0, content = "查询大间隔预警列表")
    public RestResult djgYujingPage(@RequestBody SearchByRqParam param) {
        this.getPage(true, param);
        return RestResult.ok(new PageInfo<>(xlgjdayService.getDjgYuJingListForPage(param)));
    }

    /**
     * 大间隔预警导出列表
     */
    @PostMapping("djg/yujing/output")
    @TagLog(operation = 5, content = "导出大间隔预警列表")
    public RestResult djgYujingOutput(@RequestBody SearchByRqParam param) {
        this.getPage(false, param);
        return RestResult.ok(xlgjdayService.getDjgYuJingListForPage(param));
    }
}
